package com.to8to.scene.stat;

import static com.to8to.thrift.diary.module.TScene._Fields.STAT;

public interface StatUpdateIface
{

    String STAT_PREFIX = STAT.getFieldName() + ".";

    /**
     * @deprecated 被拆分成 {@link #refreshProductInfo(String)} ,{@link #refreshDiaryInfo(String, int, String, boolean)}
     * {@link #refreshCommentNum(String, String, int, String, boolean)}
     */
    @Deprecated
    void asyncUpdate(String id);

    /**
     * 同步改，不去查数据库，直接根据当前的行为来修改相应的统计字段
     * 
     * @param target_id
     * @param behavior_type
     * @param status
     * @return
     */

    // DBObject syncUpdate(String target_id,int behavior_type,int status);
    void syncUpdate(String target_id, int behavior_type, int status);

    /**
     * 刷新评论总数
     * @param tgt_id 目标id(现场或日记的id)
     * @param recentTime 评论创建时间
     * @param userId 评论的用户id
     * @param status 事件类型（评论 1 ，删除评论 -1）
     * @param setRecent 是否设置Recent_time字段
     * @param setCommentNum 是否重新计算回复数（回复的回复不用重新计算）           
     */
    void refreshCommentInfo(String tgt_id, int recentTime, String userId, boolean setRecent, boolean setCommentNum);

    /**
     * 更新商品信息
     * 
     * @param tgt_id
     *            目标id(现场或日记的id)
     * @param recentTime
     *            评论时间（其实也可以使用当前时间，使用评论发生的时间则更为准确）
     * @param userId
     *            评论的用户id
     * @param status
     *            事件类型
     */
    void refreshProductInfo(String tgt_id, int recentTime, String userId, boolean setRecent);

    /** 
     * 更新内容：
     * 1，封面图
     * 2，各阶段各状态下的日记数
     * 3，业主日记和监理日记的数量
     * 4，日记类型
     * @param tgt_id
     * @param recentTime
     * @param userId
     * @param status
     */
    void refreshDiaryInfo(String tgt_id, int recentTime, String userId, boolean setRecent);
}
